package view;

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.FlowLayout;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Image;
import java.util.TimerTask;
import javax.swing.ImageIcon;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;

//Oainel central que contem os trilhos e trens desenhados na interface gráfica
public class PainelCentral extends JPanel {
	private int x1 = 5, y1 = 5;
        private Image imagem = null;
        private JTextField velocidade1, velocidade2;
        private JLabel labelVelocidade1, labelVelocidade2;
        private JPanel temVelocidades, vel1, vel2;
        
        public PainelCentral(){
        	vel1 = new JPanel();
                vel2 = new JPanel();
                vel1.setLayout(new FlowLayout());
                vel2.setLayout(new FlowLayout());
                
        	this.setLayout(new BorderLayout());
                
                this.velocidade1 = new JTextField("000 Km/h");
                this.velocidade1.setEditable(false);
                this.velocidade2 = new JTextField("000 Km/h");
                this.velocidade2.setEditable(false);
                this.labelVelocidade1 = new JLabel("Trem 1");
                this.labelVelocidade2 = new JLabel("Trem 2");
                this.vel1.add(this.labelVelocidade1);
                this.vel2.add(this.labelVelocidade2);
                this.vel1.add(this.velocidade1);
                this.vel2.add(this.velocidade2);
                
                temVelocidades = new JPanel();
                temVelocidades.setLayout(new BorderLayout());
                this.add(temVelocidades, BorderLayout.SOUTH);
                
                temVelocidades.add(this.vel1, BorderLayout.WEST);
                temVelocidades.add(this.vel2, BorderLayout.EAST);
        }
        
	public void paintComponent(Graphics g2){
                Graphics2D g = (Graphics2D)g2;
		super.paintComponent(g);
                
                if(imagem != null){
                    g.drawImage(imagem, 0, 0, this);
                }
                
                //Criacao do Trem
                g.setColor(Color.BLUE);
                g.fillRect(this.x1, this.y1, 10, 10);
                //Linhas Centrais
                
		/*g.drawLine( 10, 10, 10, 510 );
                g.setColor(Color.RED);
                g.drawLine( 510, 10, 510, 510 );
                g.setColor(Color.BLACK);
                g.drawLine( 1010, 10, 1010, 510 );
                g.drawLine( 10, 10, 1010, 10 );
                g.drawLine( 10, 510, 1010, 510 );*/
                
                //Linhas Externas
                g.setColor(Color.DARK_GRAY);
                g.drawLine( 5, 5, 5, 515 );
                g.drawLine( 1015, 5, 1015, 515 );
                g.drawLine( 5, 5, 1015, 5 );
                g.drawLine( 5, 515, 1015, 515 );
                
                //Linhas Internas
                g.drawLine( 15, 15, 15, 505 );//Mudei
                g.setColor(Color.RED);//Pinta linha que representa a regiao critica
                g.drawLine( 505, 15, 505, 505 );
                g.setColor(Color.DARK_GRAY);
                g.drawLine( 1005, 15, 1005, 505 );
                g.drawLine( 15, 15, 505, 15 );
                g.drawLine( 15, 505, 505, 505 );
                g.drawLine( 515, 15, 1005, 15 );
                g.drawLine( 515, 505, 1005, 505 );
                g.setColor(Color.RED);//Pinta linha que representa a regiao critica
                g.drawLine( 515, 15, 515, 505 );
                                
                //Ideia para criar trem com vagao
		//g.fill3DRect(this.x-15, this.y, 10, 10, true);
                //g.fill3DRect(this.x-30, this.y, 10, 10, true);
                g.setColor(Color.GREEN);
                g.fillRect(6, 6, 40, 9);
                g.setColor(Color.ORANGE);
                g.fillRect(975, 506, 40, 9);
	   
		
	}
	//Modifica os atributos x e y que contem a posicao dos atual do quadrado que
        //representa o trem
	public void repaint(int x, int y){
		this.x1=x;
		this.y1=y;
                this.repaint();
	}
	
        //Metodos que modificam as caixas de texto com informações da velocidade dos trens
       //que foram adicionadas previamente ao PainelCentral
        public JTextField getVelocidade1(){
            return this.velocidade1;
        }
        public JTextField getVelocidade2(){
            return this.velocidade2;
        }
        public void setVelocidade1(String s){
            this.velocidade1.setText(s);
        }
        public void setVelocidade2(String s){
            this.velocidade2.setText(s);
        }
        
        /**
         * Classe que e usada como Thread para fazer modificacoes mas posicoes dos
         * quadrados (trens) com o passar do tempo no PainelCentral
         * 
         */
    class Move extends TimerTask {

		@Override
		public void run() {
			//while(true){
				
				if(x1<505 && y1 == 5){
					x1+=1;
				} else if(x1 == 505 && y1 < 505){
					y1+=1;
				} else if(x1 > 5 && y1 == 505){
					x1-=1;
				} else{
					y1-=1;
				}
				
			repaint(x1,y1);
		}
    }
}